package io.adrainty.bolee.insurance.models.entity;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.adrainty.bolee.framework.commons.basic.BaseEntity;
import io.adrainty.bolee.framework.commons.basic.EnableEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.io.Serial;
import java.math.BigDecimal;
import java.util.List;

/**
 * <p>InsurancePlanEntity</p>
 *
 * @author AdRainty
 * @version V1.0.0
 * @description 保险计划
 * @since 2025/8/12 10:52:04
 */

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "保险计划")
@EqualsAndHashCode(callSuper = true)
public class InsurancePlanEntity extends BaseEntity {

    @Serial
    private static final long serialVersionUID = 1192878698980897150L;
    
    @Schema(description = "保险商品id")
    private Long insuranceId;

    @Schema(description = "保险方案名称")
    @JsonProperty("palnName")
    private String planName;

    @Schema(description = "保险方案编号")
    private Long planNo;

    @Schema(description = "保险方案名称补充")
    @JsonProperty("palnRemake")
    private String planRemake;

    @Schema(description = "默认定价")
    private BigDecimal price;

    @Schema(description = "默认定价单位：y/d,y/m,y/y")
    private String priceUnit;

    @Schema(description = "每年最高")
    private BigDecimal maxPriceYear;

    @Schema(description = "每月最高")
    private BigDecimal maxPriceMonth;

    @Schema(description = "每周最高")
    private BigDecimal maxPriceWeek;

    @Schema(description = "一次性投入最高")
    private BigDecimal maxPriceAllIn;

    @Schema(description = "排序")
    private Integer sortNo;

    @Schema(description = "批量操作：主键ID")
    private String[] checkedIds;

    @Schema(description = "保险方案保障项")
    private List<PlanSafeguardEntity> planSafeguardVOs;

    @Schema(description = "方案给付计划")
    private PlanEarningsEntity planEarningsVO;

    @Schema(description = "批量操作：保险id")
    private Long[] insuranceIds;

    @Schema(description = "数据状态：0正常 1禁用")
    private EnableEnum dataState;

}
